// 此文件用于处理公募基金固定逻辑，对部分代码进行分离,让主文件只涉及核心逻辑
import { jsonArray } from '@/api/productApi/file'
import Vue from 'vue'
import store from '@/store'
import { Message } from 'element-ui'

// 判断步骤是否已经走过
export function stepIsSuccess(res, _this, num) {
	if (res.data.body.recordFundAddInfo.baseMode) {
		_this.active = 1
	} // 基础信息
	if (res.data.body.recordFundAddInfo.dateMode) {
		_this.active = 2
	} // 重要日期
	if (res.data.body.recordFundAddInfo.organMode) {
		_this.active = 3
	} // 机构信息
	if (res.data.body.recordFundAddInfo.rateMode) {
		_this.active = 4
	} // 费率信息
	if (res.data.body.recordFundAddInfo.investMode) {
		_this.active = 5
	} // 投资信息
	if (res.data.body.recordFundAddInfo.riskMode) {
		_this.active = 6
	} // 风控信息
	// 是否插入委托人组件
	if (res.data.body.productFundInfo) {
		if (res.data.body.productFundInfo.baseInfo.planType === '1') { // 当计划类型为 单一资产管理计划
			// 委托人信息
			if (res.data.body.recordFundAddInfo.cosignerMode) {
				_this.active = 7
			}
			// 基金经理信息
			if (res.data.body.recordFundAddInfo.fundManagerMode) {
				_this.active = 8
			}
			// 文件信息
			if (res.data.body.recordFundAddInfo.fileMode) {
				_this.active = 9
			}
		} else {
			// 基金经理信息
			if (res.data.body.recordFundAddInfo.fundManagerMode) {
				_this.active = 7
			}
			// 文件信息
			if (res.data.body.recordFundAddInfo.fileMode) {
				_this.active = 8
			}
		}
	}
	// 是否插入委托人组件
	if (res.data.body.productFundApply) {
		if (res.data.body.productFundApply.baseInfo.planType === '1') { // 当计划类型为 单一资产管理计划
			// 委托人信息
			if (res.data.body.recordFundAddInfo.cosignerMode) {
				_this.active = 7
			}
			// 基金经理信息
			if (res.data.body.recordFundAddInfo.fundManagerMode) {
				_this.active = 8
			}
			// 文件信息
			if (res.data.body.recordFundAddInfo.fileMode) {
				_this.active = 9
			}
		} else {
			// 基金经理信息
			if (res.data.body.recordFundAddInfo.fundManagerMode) {
				_this.active = 7
			}
			// 文件信息
			if (res.data.body.recordFundAddInfo.fileMode) {
				_this.active = 8
			}
		}
	}
	Vue.nextTick(() => {
		if (!num) {
			_this.comShow = _this.active
		}
		_this.stepTitle = _this.stepList[_this.comkey].title
	})
}

// 基金代码拼基金名称
export function templateTitle(obj) {
	return `${obj.baseInfo.fundCode ? obj.baseInfo.fundCode : ''}-${obj.baseInfo.fundFullName ? obj.baseInfo.fundFullName : ''}`
}

// 字符串非空返回值
export function notEmpty(property) {
	return property || ''
}

// 成立数据
export function returnEstablished() {
	const form = jsonArray(store.state.fundStep.specialtTotalData)
	form.recordFundChangeInfo = form.fundCustodianInfo
	form.raisingStatus = form.fundCustodianInfo.raisingStatus
	form.fundRaiseType = '2'
	return form
}

// 变更保存数据
export function updateSaveData() {
	const form = jsonArray(store.state.fundStep.specialtTotalData)
	form.filedCheckStatus = '0'
	form.fundRaiseType = '2'
	form.productFundApply.filedCheckStatus = '0'
	return form
}

// 变更','清算','终止','成立' && 状态 === '3'
export function submitData1(_this) { // 提交数据
	const form = jsonArray(store.state.fundStep.specialtTotalData)
	form.recordFundChangeInfo = form.fundCustodianInfo
	form.recordFundChangeInfo.changeText = [...store.state.fundStep.specialAttribute].toString()
	form.filedCheckStatus = '0'
	form.fundRaiseType = '2'
	form.type = _this.isEnterDateHtml ? _this.isEnterDateHtml : '0'
	return form
}

// 变更','清算','终止','成立' && 状态 === '7'
export function submitData2(_this) { // 提交数据
	const form = jsonArray(store.state.fundStep.specialtTotalData)
	form.recordFundChangeInfo = form.fundCustodianInfo
	form.recordFundChangeInfo.changeText = [...store.state.fundStep.specialAttribute].toString()
	form.filedCheckStatus = '0'
	form.type = _this.isEnterDateHtml ? _this.isEnterDateHtml : '0'
	form.fundSysCode = _this.fundSysCode
	form.fundRaiseType = '2'
	return form
}

// 复核 && 状态 === '4'
export function checkoutData1(_this, type) { // 复核数据
	const obj = {
		fundSysCode: _this.fundSysCode,
		fundRaiseType: '2',
		personLiableId: _this.submitInfo.personLiableId ? _this.submitInfo.personLiableId : '',
		checkLiableId: _this.submitInfo.checkLiableId ? _this.submitInfo.checkLiableId : '',
		filedCheckStatus: type === '确认无误' ? '1' : '2'
	}
	return obj
}

// 复核 && 状态 !== '4'
export function checkoutData2(_this, type) { // 复核数据
	const obj = {
		fundSysCode: _this.fundSysCode,
		personLiableId: store.state.fundStep.specialtTotalData.fundCustodianInfo.personLiableId,
		fundRaiseType: '2',
		filedCheckStatus: type === '确认无误' ? '1' : '2'
	}
	return obj
}

// 重新申请
export function reapplyData() {
	const form = jsonArray(store.state.fundStep.specialtTotalData)
	if (form.productFundApply.investInfo.specialTypeChar) {
		if (form.productFundApply.investInfo.specialTypeChar.includes('其他')) {
			if (!form.productFundApply.investInfo.specialTypeName) {
				Message({ type: 'warning', customClass: 'el-messageClass', message: '投资相关页面请填写 其他-特殊品种名' })
				return false
			}
		}
	}
	form.personLiableId = form.fundCustodianInfo.personLiableId
	form.checkLiableId = form.fundCustodianInfo.checkLiableId
	form.fundRaiseType = '2'
	return form
}

// 处理切换计划类型时步骤的转换
export function dealWithStep(_this, stepList) {
	if (_this.haveYouWalked.baseMode) { // 基础信息
		_this.active = 1
	}
	if (_this.haveYouWalked.dateMode) { // 重要日期
		_this.active = 2
	}
	if (_this.haveYouWalked.organMode) { // 机构信息
		_this.active = 3
	}
	if (_this.haveYouWalked.rateMode) { // 费率信息
		_this.active = 4
	}
	if (_this.haveYouWalked.investMode) { // 投资信息
		_this.active = 5
	}
	if (_this.haveYouWalked.riskMode) { // 风控信息
		_this.active = 6
	}
	// 是否插入委托人组件
	if (_this.clientShow) { // 当计划类型为 单一资产管理计划
		if (_this.haveYouWalked.cosignerMode) { // 委托人信息
			_this.active = 7
		}

		if (_this.haveYouWalked.fundManagerMode) { // 基金经理信息
			_this.active = 8
		}

		if (_this.haveYouWalked.fileMode) { // 文件信息
			_this.active = 9
		}
	} else {
		if (_this.haveYouWalked.fundManagerMode) { // 基金经理信息
			_this.active = 7
		}
		if (_this.haveYouWalked.fileMode) { // 文件信息
			_this.active = 8
		}
	}
	if (!_this.switchRear) {
		return false
	}
	if (_this.switchRear === 'baseInfo') { // 基础信息
		_this.comShow = stepList.findIndex(item => item.key === 'baseInfo')
	} else if (_this.switchRear === 'dateInfo') { // 重要日期
		_this.comShow = stepList.findIndex(item => item.key === 'dateInfo')
	} else if (_this.switchRear === 'organInfo') { // 机构信息
		_this.comShow = stepList.findIndex(item => item.key === 'organInfo')
	} else if (_this.switchRear === 'rateInfo') { // 费率信息
		_this.comShow = stepList.findIndex(item => item.key === 'rateInfo')
	} else if (_this.switchRear === 'investInfo') { // 投资信息
		_this.comShow = stepList.findIndex(item => item.key === 'investInfo')
	} else if (_this.switchRear === 'riskInfo') { // 风控信息
		_this.comShow = stepList.findIndex(item => item.key === 'riskInfo')
	} else if (_this.switchRear === 'consignerInfo') { // 委托人信息
		if (_this.clientShow) {
			// 当展示委托人组件时 && 组件标识为委托人组件
			// 将组件标识切换为委托人
			_this.comShow = stepList.findIndex(item => item.key === 'consignerInfo')
		} else {
			// 当不展示委托人组件 && 组件标识为委托人组件
			// 将组件切换为基金经理组件
			_this.comShow = stepList.findIndex(item => item.key === 'fundMange')
		}
	} else if (_this.switchRear === 'fundMange') { // 基金经理信息
		if (_this.clientShow && !_this.haveYouWalked.cosignerMode && !_this.haveYouWalked.fundManagerMode) {
			// 当展示委托人组件 && 没走过委托人信息 && 没走过基金经理信息
			// 将组件切换为委托人信息
			_this.comShow = stepList.findIndex(item => item.key === 'consignerInfo')
		} else {
			// 将组件切换为为基金经理组件
			_this.comShow = stepList.findIndex(item => item.key === 'fundMange')
		}
	} else if (_this.switchRear === 'fileInfo') { // 文件信息
		_this.comShow = stepList.findIndex(item => item.key === 'fileInfo')
	} else if (_this.switchRear === 'submitInfo') {
		_this.comShow = stepList.findIndex(item => item.key === 'submitInfo')
	}
	_this.stepTitle = stepList[_this.comkey].title
}
